您好,欢迎来到达州工业云! 平台首页 企业驾驶舱 帮助中心 企业登录 企业注册

HI,欢迎使用达州工业云平台!

账号必须大于2位

创新资源平台
服务平台首页>专利库>专利详情

一种误差平坦的浮点数对数运算装置

  • 申请号:CN201110433754.2 申请公布号: CN102566965A
  • 申请日: 2011-12-22 申请公布日: 2012-07-11
  • 申请(专利权)人: 专利代理机构: 上海上大专利事务所(普通合伙)
  • 分类号:G06F7/483

专利介绍

本发明公开了一种误差平坦的浮点数对数运算装置,浮点数以2为底的对数运算,该浮点数值为
1.一种误差平坦的浮点数对数运算装置,用于实施浮点数以2为底的对数运算,该浮点数值表示为xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0ntent="drawing" img-format="jpg" inline="no" orientation="portrait" wi="146"/>,其中,S为浮点数的符号数,E为浮点数的指数,且E为L位比特数,F为浮点数的尾数,ntent="drawing" img-format="jpg" inline="no" orientation="portrait" wi="62"/>,且F为N位比特数,L与N为自然数,该浮点数对数运算装置包括:一比较器(1),用于判断浮点数的尾数F所属区间,并输出浮点数的尾数F所属区间值i;一存储器(2),与上述比较器(1)连接,用于接收比较器(1)输出的浮点数的尾数F所属区间值i,根据该值i输出对应的系数值(pxa0,xa0qxa0,xa0rxa0,xa0b);一第一移位器(31),与第一加法器(41)连接,用于接收浮点数的尾数F与存储器(2)输出对应的系数值(pxa0,xa0qxa0,xa0rxa0,xa0b)中的值p,根据该值p对F进行右移,输出结果S1;一第二移位器(32),与第一加法器(41)连接,用于接收浮点数的尾数F与存储器(2)输出对应的系数值(pxa0,xa0qxa0,xa0rxa0,xa0b)中的值q,根据该值q对F进行右移,输出结果S2;一第三移位器(33),与第二加法器(42)连接,用于接收浮点数的尾数F与存储器(2)输出对应的系数值(pxa0,xa0qxa0,xa0rxa0,xa0b)中的值r,根据该值r对F进行右移,输出结果S3;一第一加法器(41),与第三加法器(43)连接,用于将第一移位器(31)的输出结果S1与第二移位器(32)的输出结果S2相加,输出相加结果A1;一第二加法器(42),与第三加法器(43)连接,用于将第三移位器(43)的输出结果S3与存储器(2)输出对应的系数值(pxa0,xa0qxa0,xa0rxa0,xa0b)中的值b相加,输出相加结果A2;一第三加法器(43),与第四加法器(43)连接,用于将第一加法器(41)的输出结果A1与第二加法器(42)的输出A2相加,输出相加结果A3;一第四加法器(44),与组合电路(7)连接,用于将第三加法器(43)的输出结果A3与浮点数的尾数F相加,输出相加结果A4;一减法器(5),与组合电路(7)连接,用于将浮点数的指数E与ntent="drawing" img-format="jpg" inline="no" orientation="portrait" wi="42"/>值相减,输出相减结果Z1;一反相器(6),与组合电路(7)连接,用于接收浮点数的符号数S,将浮点数的符号数S取反,输出反相值J;一组合电路(7),用于接收减法器(5)输出相减结果Z1、第四加法器(44)输出结果A4和反相器(6)的输出反相值J,并且将三者相加,输出该浮点数对数运算结果Y。
2.根据权利要求1所述的一种误差平坦的浮点数对数运算装置,其特征在于:上述比较器(1)设置用于比较的判断门限,其判断门限分别为:ntent="drawing" img-format="jpg" inline="no" orientation="portrait" wi="70"/>,ntent="drawing" img-format="jpg" inline="no" orientation="portrait" wi="109"/>...ntent="drawing" img-format="jpg" inline="no" orientation="portrait" wi="124"/>...ntent="drawing" img-format="jpg" inline="no" orientation="portrait" wi="85"/>,其具体如下:将对数曲线ntent="drawing" img-format="jpg" inline="no" orientation="portrait" wi="177"/>沿y轴方向平均划分n区间,求取各区间F的取值范围,设定比较器的判断门限为ntent="drawing" img-format="jpg" inline="no" orientation="portrait" wi="70"/>,ntent="drawing" img-format="jpg" inline="no" orientation="portrait" wi="109"/>...ntent="drawing" img-format="jpg" inline="no" orientation="portrait" wi="124"/>...ntent="drawing" img-format="jpg" inline="no" orientation="portrait" wi="85"/>。技术领域
本发明涉及的是一种误差平坦的浮点数对数运算装置,属于通用数字系统领域。技术背景现代电子计算机中,绝大多数运算采用浮点数运算,浮点数的效率决定了电子计算机的性能,通用数字系统中,经常需要求对数运算。目前,常用的求对数运算装置有两种:一种求对数运算装置是查表法装置,该查表法装置会受到通用数字系统资源的约束,导致对数运算结果误差较大。另一种求对数运算装置是实时运算装置,该实时运算装置对输入的每一个值,进行实时运算。但现有的实时运算装置计算量大,复杂度高,且对数运算结果误差不平坦。
发明内容
有鉴于此,本发明主要目的在于提供一种误差平坦的浮点数对数运算装置,该装置用于实施浮点数的对数运算,其计算量小,复杂度低,对数运算结果精确度高,且误差平坦。为达成上述目的,本发明所采用的技术方案是:一种误差平坦的浮点数对数运算装置,用于实施浮点数以2为底的对数运算,该浮点数值表示为xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0ntent="drawing" img-format="jpg" inline="no" orientation="portrait" wi="150"/>,其中,S为浮点数的符号数,E为浮点数的指数,且E为L位比特数,F为浮点数的尾数,ntent="drawing" img-format="jpg" inline="no" orientation="portrait" wi="62"/>,且F为N位比特数,L与N为自然数,该浮点数对数运算装置包括:一比较器1,用于判断浮点数的尾数F所属区间,并输出浮点数的尾数F所属区间值i;一存储器2,与上述比较器1连接,用于接收比较器1输出的浮点数的尾数F所属区间值i,根据该值i输出对应的系数值(pxa0,xa0qxa0,xa0rxa0,xa0b);一第一移位器31,与第一加法器41连接,用于接收浮点数的尾数F与存储器2输出对应的系数值(pxa0,xa0qxa0,xa0rxa0,xa0b)中的值p,根据该值p对F进行右移,输出结果S1;一第二移位器32,与第一加法器41连接,用于接收浮点数的尾数F与存储器2输出对应的系数值(pxa0,xa0qxa0,xa0rxa0,xa0b)中的值q,根据该值q对F进行右移,输出结果S2;一第三移位器33,与第二加法器42连接,用于接收浮点数的尾数F与存储器2输出对应的系数值(pxa0,xa0qxa0,xa0rxa0,xa0b)中的值r,根据该值r对F进行右移,输出结果S3;一第一加法器41,与第三加法器43连接,用于将第一移位器31的输出结果S1与第二移位器32的输出结果S2相加,输出相加结果A1;一第二加法器42,与第三加法器43连接,用于将第三移位器43的输出结果S3与存储器2输出对应的系数值(pxa0,xa0qxa0,xa0rxa0,xa0b)中的值b相加,输出相加结果A2;一第三加法器43,与第四加法器43连接,用于将第一加法器41的输出结果A1与第二加法器42的输出A2相加,输出相加结果A3;一第四加法器44,与组合电路7连接,用于将第三加法器43的输出结果A3与浮点数的尾数F相加,输出相加结果A4;一减法器5,与组合电路7连接,用于将浮点数的指数E与ntent="drawing" img-format="jpg" inline="no" orientation="portrait" wi="42"/>值相减,输出相减结果Z1;一反相器6,与组合电路7连接,用于接收浮点数的符号数S,将浮点数的符号数S取反,输出反相值J;一组合电路7,用于接收减法器5输出相减结果Z1、第四加法器44输出结果A4和反相器6的输出反相值J,并且将三者相加,输出该浮点数对数运算结果Y。上述比较器(1)设置判断门限,其判断门限分别为:ntent="drawing" img-format="jpg" inline="no" orientation="portrait" wi="70"/>,ntent="drawing" img-format="jpg" inline="no" orientation="portrait" wi="109"/>...ntent="drawing" img-format="jpg" inline="no" orientation="portrait" wi="124"/>...ntent="drawing" img-format="jpg" inline="no" orientation="portrait" wi="85"/>,其具体如下:将对数曲线ntent="drawing" img-format="jpg" inline="no" orientation="portrait" wi="177"/>沿y轴方向平均划分n区间,求取各区间F的取值范围,设定比较器的判断门限为ntent="drawing" img-format="jpg" inline="no" orientation="portrait" wi="70"/>,ntent="drawing" img-format="jpg" inline="no" orientation="portrait" wi="109"/>...ntent="drawing" img-format="jpg" inline="no" orientation="portrait" wi="124"/>...ntent="drawing" img-format="jpg" inline="no" orientation="portrait" wi="85"/>。本发明的一种误差平坦的浮点数对数运算装置与现有技术相比具有以下的优点:该装置对浮点数的对数运算速度快,没有乘法运算,计算量小,复杂度低,只需查表,判断,移位,加法等简单操作,提高浮点数对数运算结果精确度,且平坦误差值。
附图说明
图1xa0表示本发明的浮点数的表示法的示意图。图2xa0表示本发明线性线段分区间逼近对数曲线ntent="drawing" img-format="jpg" inline="no" orientation="portrait" wi="176"/>的示意图。图3xa0表示本发明的一种误差平坦的浮点数对数运算装置的架构示意图。图4xa0表示对数曲线ntent="drawing" img-format="jpg" inline="no" orientation="portrait" wi="176"/>被划分4区间,本发明的浮点数对数运算结果误差曲线与“Lowxa0Costxa0Hardwarexa0Implementationxa0ofxa0Logarithmxa0Approximation”的浮点数对数运算结果误差曲线进行比较图。图5xa0表示对数曲线ntent="drawing" img-format="jpg" inline="no" orientation="portrait" wi="176"/>被划分15区间,本发明中的浮点数对数运算结果误差曲线与“Powerxa0andxa0Area-Efficientxa0Unifiedxa0Computationxa0ofxa0Vectorxa0andxa0Elementaryxa0Functionsxa0forxa0Handheldxa03Dxa0Graphicsxa0Systems”的浮点数对数运算结果误差曲线进行比较图。
具体实施方式
下面结合附图对本发明的实施例作详细说明。如图1所示,本发明中浮点数值表示为ntent="drawing" img-format="jpg" inline="no" orientation="portrait" wi="149"/>,其中,S为浮点数的符号位;E为浮点数的指数,且E为L位比特数;F为浮点数的尾数,ntent="drawing" img-format="jpg" inline="no" orientation="portrait" wi="62"/>,且F为N位比特数;L与N为自然数;图2xa0表示本发明线性线段分区间逼近对数曲线ntent="drawing" img-format="jpg" inline="no" orientation="portrait" wi="211"/>的示意图。如图所示,图中横轴表示浮点数的尾数F的取值,图中纵轴表示Y的取值,图中对数曲线表示ntent="drawing" img-format="jpg" inline="no" orientation="portrait" wi="176"/>。将对数曲线ntent="drawing" img-format="jpg" inline="no" orientation="portrait" wi="176"/>沿y轴方向平均划分n区间。A和B为第i区间的两个端点,B和C为第i+1区间的两个端点。A点坐标值为ntent="drawing" img-format="jpg" inline="no" orientation="portrait" wi="86"/>,xa0B点坐标值为ntent="drawing" img-format="jpg" inline="no" orientation="portrait" wi="133"/>,C点坐标值为ntent="drawing" img-format="jpg" inline="no" orientation="portrait" wi="138"/>。线段AB表示为ntent="drawing" img-format="jpg" inline="no" orientation="portrait" wi="118"/>,ntent="drawing" img-format="jpg" inline="no" orientation="portrait" wi="172"/>。利用线段AB逼近第i区间曲线ntent="drawing" img-format="jpg" inline="no" orientation="portrait" wi="177"/>,ntent="drawing" img-format="jpg" inline="no" orientation="portrait" wi="174"/>。线段BC表示为ntent="drawing" img-format="jpg" inline="no" orientation="portrait" wi="148"/>,ntent="drawing" img-format="jpg" inline="no" orientation="portrait" wi="192"/>。利用线段BC逼近第i+1区间曲线ntent="drawing" img-format="jpg" inline="no" orientation="portrait" wi="194"/>,ntent="drawing" img-format="jpg" inline="no" orientation="portrait" wi="193"/>。Ei为第i区间曲线与线段AB之间的误差值ntent="drawing" img-format="jpg" inline="no" orientation="portrait" wi="161"/>,ntent="drawing" img-format="jpg" inline="no" orientation="portrait" wi="176"/>。Ei+1为第i+1区间曲线与线段BC之间的误差值ntent="drawing" img-format="jpg" inline="no" orientation="portrait" wi="178"/>,ntent="drawing" img-format="jpg" inline="no" orientation="portrait" wi="193"/>。将对数曲线ntent="drawing" img-format="jpg" inline="no" orientation="portrait" wi="176"/>沿y轴方向平均划分n区间,得出各区间范围值ntent="drawing" img-format="jpg" inline="no" orientation="portrait" wi="69"/>,ntent="drawing" img-format="jpg" inline="no" orientation="portrait" wi="106"/>...ntent="drawing" img-format="jpg" inline="no" orientation="portrait" wi="120"/>...ntent="drawing" img-format="jpg" inline="no" orientation="portrait" wi="85"/>,将这些范围值作为比较器判断标准,并求取各个区间的系数值a和b,其中第i区间系数值ntent="drawing" img-format="jpg" inline="no" orientation="portrait" wi="136"/>,ntent="drawing" img-format="jpg" inline="no" orientation="portrait" wi="126"/>。第i区间线段AB表达式为: ntent="drawing" img-format="jpg" inline="no" orientation="portrait" wi="286"/>xa0(1)从式(1)可以看出整个运算过程需要乘法,为了适合嵌入式设备的应用,本发明采用移位和加减法代替乘法功能。将系数值ai分解成由系数值(pixa0,xa0qixa0,xa0ri)组成ntent="drawing" img-format="jpg" inline="no" orientation="portrait" wi="161"/>,(pixa0,xa0qixa0,xa0ri)为整数,ntent="drawing" img-format="jpg" inline="no" orientation="portrait" wi="18"/>表示为加减运算。式(1)转换为式(2) ntent="drawing" img-format="jpg" inline="no" orientation="portrait" wi="314"/>xa0(2)最后根据上述的方法,求取每个区间的系数值(pxa0,xa0qxa0,xa0rxa0,xa0b)并存储于存储器。如图3所示,本发明的一种误差平坦的浮点数对数运算装置,用于获得浮点数xa0ntent="drawing" img-format="jpg" inline="no" orientation="portrait" wi="182"/>以2为底的对数运算结果Y: ntent="drawing" img-format="jpg" inline="no" orientation="portrait" wi="86"/> ntent="drawing" img-format="jpg" inline="no" orientation="portrait" wi="194"/>xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0(3) ntent="drawing" img-format="jpg" inline="no" orientation="portrait" wi="241"/> ntent="drawing" img-format="jpg" inline="no" orientation="portrait" wi="176"/> ntent="drawing" img-format="jpg" inline="no" orientation="portrait" wi="352"/> 其中,S为浮点数的符号数,E为浮点数的指数,且E为L位比特数,F为浮点数的尾数,ntent="drawing" img-format="jpg" inline="no" orientation="portrait" wi="62"/>,且F为N位比特数,L与N为自然数,该浮点数对数运算装置包括:一比较器1,用于判断浮点数的尾数F所属区间,并输出浮点数的尾数F所属区间值i;一存储器2,与上述比较器1连接,用于接收比较器1输出的浮点数的尾数F所属区间值i,根据该值i输出对应的系数值(pxa0,xa0qxa0,xa0rxa0,xa0b);一第一移位器31,与第一加法器41连接,用于接收浮点数的尾数F与存储器2输出对应的系数值(pxa0,xa0qxa0,xa0rxa0,xa0b)中的值p,根据该值p对F进行右移,输出结果S1;一第二移位器32,与第一加法器41连接,用于接收浮点数的尾数F与存储器2输出对应的系数值(pxa0,xa0qxa0,xa0rxa0,xa0b)中的值q,根据该值q对F进行右移,输出结果S2;一第三移位器33,与第二加法器42连接,用于接收浮点数的尾数F与存储器2输出对应的系数值(pxa0,xa0qxa0,xa0rxa0,xa0b)中的值r,根据该值r对F进行右移,输出结果S3;一第一加法器41,与第三加法器43连接,用于将第一移位器31的输出结果S1与第二移位器32的输出结果S2相加,输出相加结果A1;一第二加法器42,与第三加法器43连接,用于将第三移位器43的输出结果S3与存储器2输出对应的系数值(pxa0,xa0qxa0,xa0rxa0,xa0b)中的值b相加,输出相加结果A2;一第三加法器43,与第四加法器43连接,用于将第一加法器41的输出结果A1与第二加法器42的输出A2相加,输出相加结果A3;一第四加法器44,与组合电路7连接,用于将第三加法器43的输出结果A3与浮点数的尾数F相加,输出相加结果A4;一减法器5,与组合电路7连接,用于将浮点数的指数E与ntent="drawing" img-format="jpg" inline="no" orientation="portrait" wi="42"/>值相减,输出相减结果Z1;一反相器6,与组合电路7连接,用于接收浮点数的符号数S,将浮点数的符号数S取反,输出反相值J;一组合电路7,用于接收减法器5输出相减结果Z1、第四加法器44输出结果A4和反相器6的输出反相值J,并且将三者相加,输出该浮点数对数运算结果Y。上述比较器(1)设置判断门限,其判断门限分别为:ntent="drawing" img-format="jpg" inline="no" orientation="portrait" wi="70"/>,ntent="drawing" img-format="jpg" inline="no" orientation="portrait" wi="109"/>...ntent="drawing" img-format="jpg" inline="no" orientation="portrait" wi="124"/>...ntent="drawing" img-format="jpg" inline="no" orientation="portrait" wi="85"/>,其具体如下:将对数曲线ntent="drawing" img-format="jpg" inline="no" orientation="portrait" wi="177"/>沿y轴方向平均划分n区间,求取各区间F的取值范围,设定比较器的判断门限为ntent="drawing" img-format="jpg" inline="no" orientation="portrait" wi="70"/>,ntent="drawing" img-format="jpg" inline="no" orientation="portrait" wi="109"/>...ntent="drawing" img-format="jpg" inline="no" orientation="portrait" wi="124"/>...ntent="drawing" img-format="jpg" inline="no" orientation="portrait" wi="85"/>。为了验证使用本发明的一种误差平坦的浮点数对数运算装置的浮点数对数运算结果误差效果,通过与“Lowxa0Costxa0Hardwarexa0Implementationxa0ofxa0Logarithmxa0Approximation”的浮点数对数运算结果误差进行比较。如图4所示,图中实线与虚线各有4个波峰,表示对数曲线ntent="drawing" img-format="jpg" inline="no" orientation="portrait" wi="174"/>被划分4区间。图中横轴表示浮点数的尾数取值,纵轴表示误差取值。图中实线为采用本发明的一种误差平坦的浮点数对数运算方法后的误差曲线,图中虚线为采用文献“Lowxa0Costxa0Hardwarexa0Implementationxa0ofxa0Logarithmxa0Approximation”的对数运算方法后的误差曲线。该文献由Gutierrez,xa0R.提出,于2011年发表于Systems,xa0IEEExa0Transactions,12期19卷第2326页至2330页。从图4中可以看出,本发明的浮点数对数运算结果误差平坦,其4个区间的最大误差值相等,优于文献“Lowxa0Costxa0Hardwarexa0Implementationxa0ofxa0Logarithmxa0Approximation”的对数运算结果误差。为了验证使用本发明的一种误差平坦的浮点数对数运算装置的浮点数对数运算结果误差效果,通过与“Powerxa0andxa0Area-Efficientxa0Unifiedxa0Computationxa0ofxa0Vectorxa0andxa0Elementaryxa0Functionsxa0forxa0Handheldxa03Dxa0Graphicsxa0Systems”的浮点数对数运算结果误差进行比较。如图5所示,图中实线与虚线各有15个波峰,表示对数曲线ntent="drawing" img-format="jpg" inline="no" orientation="portrait" wi="174"/>被划分15区间,图中横轴表示浮点数的尾数取值,纵轴表示误差取值。图中实线为采用本发明的一种误差平坦的浮点数对数运算方法后的误差曲线,图中虚线为采用文献“Powerxa0andxa0Area-Efficientxa0Unifiedxa0Computationxa0ofxa0Vectorxa0andxa0Elementaryxa0Functionsxa0forxa0Handheldxa03Dxa0Graphicsxa0Systems”的对数运算方法后的误差曲线。该文献由Byeong-Gyu提出,于2008年发表于Computers,xa0IEEExa0Transactions,57期59卷第490页至第504页。从图5中可以看出,本发明的浮点数对数运算结果误差平坦,其15个区间的最大误差值相等,优于文献“Powerxa0andxa0Area-Efficientxa0Unifiedxa0Computationxa0ofxa0Vectorxa0andxa0Elementaryxa0Functionsxa0forxa0Handheldxa03Dxa0Graphicsxa0Systems”的对数运算结果误差。以上揭露的仅为本发明的较佳实例实施而已,当然不能以此来限定本发明的权利范围,因此依本发明权利要求所作的等同变化,均属本发明所涵盖的范围。